package com.example.demo.mapper;


import com.example.demo.entity.ArticleInfo;
import com.example.demo.entity.vo.ArticleInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 首先就是加注解
 */
@Mapper
public interface ArticleMapper {
    // 添加文章，返回受影响的行数,所以是int
    int add(ArticleInfo articleInfo);

    // 传递文章id 和 文章对应的 uid 查询展示到页面，之后根据返回的页面进行修改
    ArticleInfo getDetailByIdAndUid(@Param("id")Integer id , @Param("uid")Integer uid);

    // 修改操作,返回受影响的行数,所以是int
    int update(ArticleInfo articleInfo);

    //查看某篇文章的详情,传递过来id就可以了
    ArticleInfoVO getDetail(@Param("id")Integer id);

    // 修改阅读量,方案1：先查询到原来的在进行加1操作，但操作不是原子性的,多人同时访问就会有问题
    //           方案2：直接 sql语句 中进行更新 + 1 操作, 推荐这个
    int addRCount(@Param("id")Integer id);

    // 显示个人的列表页,根据uid
    List<ArticleInfo> getMyListByUid(@Param("uid")Integer uid);

    // 个人列表页删除文章
    int del(@Param("id")Integer id,@Param("uid")Integer uid);

    // 分页查询文章，因为没有作者名字所以ArticleInfo 就可以了
    List<ArticleInfo> getListByPage(@Param("pageSize")Integer pageSize,
                                    @Param("offset")Integer offset);

    // 查询总页数,为了找到 resultType 的类型，所以用 Integer ,来自于 java.lang ， 而不用int
    Integer getCount();
}
